package define

type UserRegisterReq struct {
	UserRegisterInput
	Passport string `v:"required#请输入账号"`  // 账号
	Password string `v:"required#请输入密码"`  // 密码
	Nickname string `v:"required#请输入昵称"`  // 昵称
	Captcha  string `v:"required#请输入验证码"` // 验证码
}

// 创建用户输入
type UserRegisterInput struct {
	Passport string // 账号
	Password string // 密码
	Nickname string // 昵称
}

// 用户登录
type UserLoginInput struct {
	Passport string // 账号
	Password string // 密码(明文)
}

// Api用户登录
type UserLoginReq struct {
	UserLoginInput
	Passport string `v:"required#请输入帐号"`  // 帐号
	Password string `v:"required#请输入密码"`  // 密码(明文)
	Captcha  string `v:"required#请输入验证码"` // 验证码
}

// Req是接口用来接收请求参数的结构体(结构体可以包含v标签，用于参数校验)
// Input是Service用来接收参数的结构体
type UserGetListReq struct {
	Id               uint // 用户ID
	UserGetListInput      // 传入Service函数的结构体
}

type UserGetListInput struct {
	ContentGetListInput
}

// 用户主页查询内容
// 返回内容需要设置json标签，用于序列化之后发送给前端
type UserGetListOutput struct {
	Content *ContentGetListOutput `json:"content"` // 查询用户
	User    *UserGetProfileOutput `json:"user"`    // 查询用户
	Stats   map[string]int        // 发布内容数量
}

// 用户信息
type UserGetProfileOutput struct {
	Id       uint           // 用户ID
	Nickname string         // 用户昵称
	Avatar   string         // 用户头像
	Gender   int            // 性别 0：未设置 1：男 2：女
	Stats    map[string]int // 发布内容设置
}

// 修改昵称
type UserUpdateProfileReq struct {
	UserUpdateProfileInput
	Nickname string `v:"required#请输入昵称信息"`
}

type UserUpdateProfileInput struct {
	Id       uint   // 用户ID
	Nickname string // 用户昵称
	Avatar   string // 用户头像
	Gender   int    // 用户性别
}

// 头像
type UserUpdateAvatar struct {
	Avatar string // 头像
}

// 修改用户密码
type UserPasswordReq struct {
	UserPasswordInput
	OldPassword string `v:"required#请输入原始密码"` // 原密码
	NewPassword string `v:"required#请输入新密码"`  // 新密码
}

type UserPasswordInput struct {
	OldPassword string
	NewPassword string
}

// 消息
// TargetType获取主题，TargetId获取Content（对应ContentId)，UserId表示是哪个用户的评论
type UserGetMessageReq struct {
	UserGetMessageInput
}

type UserGetMessageInput struct {
	Page       int    // 分页码
	Size       int    // 分页数
	TargetType string // 评论的主题类型
	TargetId   int    // 评论的ContentId
	UserId     uint   // 作出评论的用户的Id
}

type UserGetMessageOutput struct {
	List  []ReplyGetListOutputItem // 返回的主要内容列表
	Page  int                       // 用于分页
	Size  int                       // 用于分页
	Total int                       // 数据总量
	Stats map[string]int            // 分类统计
}

// 创建内容页面
